day06c (ポーリングでマウス入力)
USBドライバが追加された
src/kernel/usbに(しかも再帰的に)置かれたcppをどうやってビルドすれば良いんだ・・・?
ビルドファイルはbuild/に生成するようにしていて、その上.oファイルはbuild/objにおいている
Makefileはこんな感じ:
code:makefile
SOURCES := $(wildcard src/kernel/*.cpp)
SOURCES += $(wildcard src/kernel/usb/*.cpp)
SOURCES += $(wildcard src/kernel/classdriver/*.cpp)
SOURCES += $(wildcard src/kernel/xhci/*.cpp)
OBJS := $(addprefix $(OBJ_DIR)/, $(notdir $(SOURCES:.cpp=.o)))
# 略
$(OBJ_DIR)/%.o: src/kernel/%.cpp
clang++ $(CXXFLAGS) -o $@ -c $<
これだと、例えばsrc/kernel/usb/device.cppをビルドできない
OBJS := $(addprefix $(OBJ_DIR)/, $(patsubst src/kernel/%.cpp, %.o, $(SOURCES)))で解決?
ReadVendorIdがhppに書いてあるのが気になったので、cppファイルに実態を書いてたんだけどエラーが出て、しょうがないのでhppに書いた
hppを依存関係に含めてないので、Makefileがビルドし直してくれず、永遠に詰まってた マジで悲しかった
基本的に写経した後に本を読んで理解しようとしているんだけど、今回は写経しているときに全部わからなさすぎて大変だった
MemMapRegister::Readでreturnを忘れて詰んでた
なぜScanAllBus内のforカウンタ名はfunctionなのかと思ったけど、ReadVendorIdの方に合わせた?
ScanBusの引数名はbusだったので、おや?となった
多分ホストブリッジのfunctionはそれぞれ他のバスにつながってるんじゃないかな
ホストブリッジ.function(1)が存在する == バス(1)が存在する みたいな?
P147下あたりの行に普通に書いてあった
思ってたより複雑で大変だったし、全然理解できてないから、しっかり見直したいところ
あとhppを依存関係に含めるべきだと思った .dファイルについて調べてみる